<?php

class Application_Form_PrixProduit_GestionProduitForm extends Zend_Form {
	
	public function init() {
		$session = new Zend_Session_Namespace("codebar");
		$this->setName('gestionproduit');
		$this->setDecorators(array(
			'FormElements',
		//   array('HtmlTag', array('tag' => 'table')),
			'Form'
			));//on met le form dans un tableau html

			/*  $id = new Zend_Form_Element_Hidden('id');
			 $id->addFilter('Int')
			 ->setDecorators(array('ViewHelper','FormErrors','Label','Errors'));
			 $this->addElement($id);*/

			$groupe = $session->user->getGroupeActif();
			$produits = $groupe->getProduits();//on récupère les produits du groupe

			/*
			 *
			 *  produits déjà  existants : on remplit les champs avec les valeurs que l'on connait déjà
			 *
			 */
			foreach($produits as $produit)//on procéde produit par produit
			{
				$nom = new Zend_Form_Element_Text('nomProduit'.$produit->getIdProduit());//on nomme les champs en fonction de l'id du produit
				$nom->setLabel('Nom :')
				->setValue($produit->getName())
				->setRequired('true')
				->addFilter('StripTags')
				->addFilter('StringTrim')
				->addValidator('NotEmpty')
				->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'nomProduit prod_column')),'Errors'));//on met des balises td autour du champ
				$this->addElement($nom);

				$quantite = new Zend_Form_Element_Text('quantiteProduit'.$produit->getIdProduit());
				$quantite->setLabel('Stock :')
				->setValue($produit->getQuantite())
				->setRequired('true')
				->addFilter('StripTags')
				->addFilter('StringTrim')
				->addValidator('NotEmpty')
				->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'quantiteProduit prod_column')),'Errors'));
				$this->addElement($quantite);

				$db_type = new Application_Model_TypeProduitTable();
				$rows = $db_type->fetchAll($db_type->select());

				$type = new Zend_Form_Element_Select('typeProduit'.$produit->getIdProduit());
				$type->setLabel('Type :')
				->setRequired('true')
				->addFilter('StripTags')
				->addFilter('StringTrim')
				->addValidator('NotEmpty')
				->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'typeProduit prod_column')),'Errors'));
				foreach($rows as $r)
				{
					$type->addMultiOption($r['id_type'],$r['nom_type']);//on insÃšre tous les types de produit dans la liste dÃ©roulante
				}
				$type->setValue($produit->getIdType());
				$this->addElement($type);

				$code_barres = new Zend_Form_Element_Text('codeBarresProduit'.$produit->getIdProduit());
				$code_barres->setLabel('Code Barres :')
				->setValue($produit->getCodeBarres())
				//->setRequired('true')
				->addFilter('StripTags')
				->addFilter('StringTrim')
				//->addValidator('NotEmpty')
				//ajouter un validator pour le code barres ?
				->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'codeBarresProduit prod_column')),'Errors'));
				$this->addElement($code_barres);

				//on crÃ©e un displaygroup par produit, Ã§a nous permet de gÃ©rer les lignes dans le tableau
				$this->addDisplayGroup(array($nom,$quantite,$type,$code_barres),'displayGroupProduit'.$produit->getIdProduit());
				$displaygroup = $this->getDisplayGroup('displayGroupProduit'.$produit->getIdProduit());
				$displaygroup->clearDecorators();
				$displaygroup->addDecorators(array('FormElements',array('HtmlTag', array('tag' => 'tr'))));//on entoure l'ensemble du displaygroup par des balises tr

				$db_type_prix = new Application_Model_TypePrixTable();
				$rows = $db_type_prix->fetchAll($db_type_prix->select());
				foreach($rows as $r)
				{
					$prix_produit = new Application_Model_Prix();
					$prix_produit = $prix_produit->getByIds($produit->getIdProduit(),$r['id_type_prix']);//on rÃ©cupÃšre le prix du produit dans le type de prix considÃ©rÃ©

					$prix = new Zend_Form_Element_Text('prix'.$r['nom'].$produit->getIdProduit());
					$prix ->setLabel('Prix '.$r['nom'].' :')
					->setRequired('true')
					->addFilter('StripTags')
					->addFilter('StringTrim')
					->addValidator('NotEmpty')
					->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'prix'.$r['nom'].' prod_column')),'Errors'));
					$prix->setValue($prix_produit->getPrix());//normalement, le produit a forcÃ©ment un prix dans chaque type de prix qui existe

					$this->addElement($prix);
					$displaygroup->addElement($prix,'prix'.$r['nom']);//on ajout le champ de ce type de prix au displaygroup du produit
				}

				$suppr = new Zend_Form_Element_Checkbox('suppr'.$produit->getIdProduit());
				$suppr->setLabel('suppr'.$produit->getIdProduit())
				->setValue(false)
				->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'suppression prod_column')),'Errors'));
				$this->addElement($suppr);
				$displaygroup->addElement($suppr,'suppr'.$produit->getIdProduit());
			}


			/*
			 *
			 *  nouveau produit
			 *
			 */
			$nom = new Zend_Form_Element_Text('nomNouveauProduit');
			$nom->setLabel('Nom :')
			//->setRequired('true')
			->addFilter('StripTags')
			->addFilter('StringTrim')
			//->addValidator('NotEmpty')
			->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'nomProduit prod_column')),'Errors'));
			$this->addElement($nom);

			$quantite = new Zend_Form_Element_Text('quantiteNouveauProduit');
			$quantite->setLabel('Stock :')
			//->setRequired('true')
			->addFilter('StripTags')
			->addFilter('StringTrim')
			//->addValidator('NotEmpty')
			->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'quantiteProduit prod_column')),'Errors'));
			$this->addElement($quantite);

			$db_type = new Application_Model_TypeProduitTable();
			$rows = $db_type->fetchAll($db_type->select());

			$type = new Zend_Form_Element_Select('typeNouveauProduit');
			$type->setLabel('Type :')
			//->setRequired('true')
			->addFilter('StripTags')
			->addFilter('StringTrim')
			//->addValidator('NotEmpty')
			->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'typeProduit prod_column')),'Errors'));
			foreach($rows as $r)
			{
				$type->addMultiOption($r['id_type'],$r['nom_type']);
			}
			$this->addElement($type);

			$code_barres = new Zend_Form_Element_Text('codeBarresNouveauProduit');
			$code_barres->setLabel('Code Barres :')
			//->setRequired('true')
			->addFilter('StripTags')
			->addFilter('StringTrim')
			//->addValidator('NotEmpty')
			->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'codeBarresProduit prod_column')),'Errors'));
			$this->addElement($code_barres);

			$this->addDisplayGroup(array($nom,$quantite,$type,$code_barres),'displayGroupNouveauProduit');
			$displaygroup = $this->getDisplayGroup('displayGroupNouveauProduit');
			$displaygroup->clearDecorators();
			$displaygroup->addDecorators(array('FormElements',array('HtmlTag', array('tag' => 'tr'))));

			$db_type_prix = new Application_Model_TypePrixTable();
			$rows2 = $db_type_prix->fetchAll($db_type_prix->select());
			foreach($rows2 as $r2)
			{
				$prix = new Zend_Form_Element_Text('prix'.$r2['nom'].'Nouveau');
				$prix ->setLabel('Prix '.$r2['nom'].' :')
				//->setRequired('true')
				->addFilter('StripTags')
				->addFilter('StringTrim')
				//->addValidator('NotEmpty')
				->setDecorators(array('ViewHelper','FormErrors',array('HtmlTag', array('tag' => 'td','class'=>'prix'.$r2['nom'].' prod_column')),'Errors'));
				$this->addElement($prix);
				$displaygroup->addElement($prix,'prix'.$r2['nom'].'Nouveau');
			}
			/*
			 *
			 *  fin nouveau produit
			 *
			 */


			$send = new Zend_Form_Element_Submit('send');
			$send->setAttrib('id','send_button')
			->setLabel('Enregistrer')
			->setAttrib('class','button')
			->setDecorators(array('ViewHelper','FormErrors','Errors'));
			$this->addElement($send);

			$cancel = new Zend_Form_Element_Reset('cancel');
			$cancel->setAttrib('id','send_button')
			->setLabel('Annuler')
			->setAttrib('class','button')
			->setDecorators(array('ViewHelper','FormErrors','Errors'));
			$this->addElement($cancel);
	}
}